package gui;

import java.net.URL;

import javax.swing.JLabel;

/** Si tratta di un TextPanel dedicato alla visualizzazione dello
 *  strato corrente sul numero totale di strati. Ogni volta che viene modificato 
 *  o il numero di strati totali o quello corrente il pannello viene ridisegnato.
 *  <p>In caso {@link #totalStrata} sia pari a 0 sul pannello comparirà la scritta
 *  {@link #NOSTRATA}.
 *  <p>In caso invece {@link #totalStrata} sia un valore non nullo allora sul pannello sarà
 *  mostrato il valore corrente di {@link #totalStrata}<strong>-1</strong>: questo poiché se ci sono
 *  0 strati allora non si potrà navigare affatto tra gli strati mentre se c'è né <strong>almeno</strong>
 *  uno questo pannello dovrà visualizzare il contatore di stati <strong>partendo da 0</strong>: ciò significa
 *  che lo stato 0/0 è possibilissimo mentre lo stato 0/1 implica il fatto che gli stati (in realtà) siano 2
 * @author Daniele
 * @version 1.3
 */
public class StrataOverviewPanel extends JLabel {

	private static final long serialVersionUID = -4526568942505579860L;
	private static final String NOSTRATA = "  No Strata exist yet.";
	private static final String STRATA = "  %d / %d";

	private int totalStrata;
	private int currentStratum;
	
	public StrataOverviewPanel() {
		super(NOSTRATA);
		this.totalStrata=0;
		this.currentStratum=0;
	}

	/**
	 * @param totalStrata the totalStrata to set
	 */
	public void setTotalStrata(int totalStrata) {
		this.totalStrata = totalStrata;
		this.setText(this.totalStrata==0?NOSTRATA:this.getStrataString());
	}

	/**
	 * @param currentStratum the currentStratum to set
	 */
	public void setCurrentStratum(Integer currentStratum) {
		this.currentStratum = currentStratum;
		this.setText(this.totalStrata==0?NOSTRATA:this.getStrataString());
	}
	
	private String getStrataString(){
		return String.format(STRATA, this.currentStratum,this.totalStrata-1);
	}
	
	public void setCurrentTotalStrata(Integer current,int total){
		this.currentStratum=current;
		this.totalStrata=total;
		this.setText(this.totalStrata==0?NOSTRATA:this.getStrataString());
	}
	
}
